home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 010 / hopper.bas (.txt) < prev    next >
Encoding:
GW-BASIC  |  1984-04-24  |  4.9 KB  |  67 lines

  1. 10  CLEAR,&H8000:DEF FNUP$(X$)=CHR$(ASC(X$)+32*(ASC(X$)>95)):DIM CAR$(1),DA(12),TS(9),TN$(9),BK%(23)
  2. 20  FROG$="C1RFL3BL3L0BL2R0BR11R0BR2DL2BL2L5BL2L2FBR3R5BR3GL0BL2L5BL2FR7GL5R5BFBRL0BL2L5BL2DR9DBL3L3BL3DL2BR11R2"
  3. 30  LP$="C3F3DFD2GDGL2H2UE2G3HBD2D0GBU2LHU2E4RE"
  4. 40  LOGS$="C2L45G2DGD2FDF2R46E2UEU2HUH2G2DGD2FDF2":TXTR$="C0BU3L3BD3L1BH2L2BG1BL4L3BH3L5BD3BG2R3BG3R5BR4R3BE2BR3R2"
  5. 50  CAR$(0)="R5FL8GRBR5R0BR4DBL4L0BL5LGR2BR5R0BR5R2FRL17GR19FL21DR21BDBLL4BL10L4BFBR2L2BR14R2BR2BE10"
  6. 60  CAR$(1)="L5GR8FLBL5L0BL4DBR4R0BR5RFL2BL5L0BL5L2GLR17FL19GR21DL21BDBRR4BR10R4BGBL2R2BL14L2BR26BE10"
  7. 70  DEF SEG:CS=INT((PEEK(778)+256*PEEK(779)+514)/16):DEF SEG=0:CS=CS+PEEK(&H510)+256*PEEK(&H511)+1:DEF SEG=CS:FOR X=0 TO 231: READ N: POKE X,N:NEXT X:HS=0
  8. 80  RANDOMIZE VAL (RIGHT$(TIME$,2))+100*VAL(MID$(TIME$,4,2))
  9. 90  SCREEN 0:SCREEN 1,0:COLOR 0,0:KEY OFF:CLS:LOCATE 11:PRINT "JOYSTICK OR KEYBOARD (J/K)";:JF= 0
  10. 100  A$=FNUP$(INPUT$(1)):IF A$<>"J" AND A$<>"K" AND A$<>"j" AND A$<>"k" THEN 100
  11. 110  IF A$="J" OR A$="j" THEN JF=-1
  12. 120  CLS:PRINT "INITIALIZING...":KP$="HMPK":NK$="8624"
  13. 130  DA(1)=8:DA(2)=-8:DA(3)=16:DA(4)=-8:DA(5)=16:DA(6)=0:DA(7)=8:DA(9)=-8:DA(10)=16:DA(11)=-16:DA(12)=-8
  14. 140  OPEN"HOPPER.SCO"AS 1:CLOSE:OPEN"HOPPER.SCO" FOR INPUT AS 1
  15. 150  X=0:WHILE NOT EOF(1):INPUT #1,TS(X): LINE INPUT #1,TN$(X):X=X+1:WEND:CLOSE
  16. 160  CLS:LINE(0,0)-(255,33),1,BF:GOSUB 610:LINE (266,0)-(319,177),1,B:LINE (267,1)-(318,176),1,B:LINE (0,95)-(255,105),,BF:LINE (0,167)-(255,177),,BF
  17. 170  SC=0:FR=5:B=1:LOCATE 24:PRINT SPC(5)"SCORE: 0"SPC(9)"TIME:";:FOR Y=0 TO 3:PSET (291,Y*40+20):DRAW FROG$:NEXT
  18. 180  FA=0:LG=4+(B>1)+(B=4):LP=4-B-(B=4):FOR Y=35 TO 83 STEP 12:IF Y=35 OR Y=59 OR Y=71 THEN SP=INT(INT(263/LG)/8+0.5)*8:ID=57*(LG=2)+50:FOR X=ID TO ID+(LG-1)*SP STEP SP:PSET (X,Y):DRAW LOGS$:PAINT (X-9,Y+5),2,2:DRAW TXTR$:NEXT:GOTO 200
  19. 190  SP=INT(INT(256/LP)/8+0.5)*8:ID=-56*(LP=2)-112*(LP=1)+8:FOR X=ID TO ID+(LP-1)*SP STEP SP:FOR D=6 TO 54 STEP 16:PSET (X+D,Y):DRAW LP$:PAINT (X+D,Y+3),3,3:NEXT D,X
  20. 200  NEXT Y:FOR Y=8 TO 12:RD=INT(RND(1)*(200-B*24))+20:PSET(RD,Y*12+11):C=-(SGN(DA(Y))<0):FOR X=0 TO B:DRAW"C"+STR$(INT(RND(1)*3)+1)+CAR$(C):NEXT X,Y
  21. 210  DEF SEG=0:POKE 1050,PEEK(1052):FOR D=1 TO 100:NEXT:LOCATE 24,29:PRINT"80";:FX=120:FY=12:TM=80
  22. 220  YA=23+FY*12:GET (FX,YA)-(FX+13,YA+10),BK%:PSET (FX+6,YA):DRAW FROG$
  23. 230  IF FY>6 AND FY<12 THEN FOR X=2 TO 23:IF BK%(X) THEN 430 ELSE NEXT
  24. 240  IF FY<6 THEN CPL=0:FOR X=2 TO 22 STEP 2:CPL=CPL-(BK%(X)<>0):NEXT:CPR=0:FOR X=3 TO 23 STEP 2:CPR=CPR-(BK%(X)<>0):NEXT:IF CPL<4 OR CPR<4 THEN 430
  25. 250  IF FY=6 OR FY=12 THEN FOR X=1 TO 200:NEXT
  26. 260  LOCATE 24,28:PRINT TM;:SOUND 300,0.1:M$=INKEY$:IF M$="" THEN M=0 ELSE M=ASC(M$):IF M=0 THEN M=INSTR(KP$,MID$(M$,2)):IF M THEN M=ASC(MID$(NK$,M))
  27. 270  IF M=27 THEN A$=INPUT$(1):GOTO 260
  28. 280  IF NOT JF THEN 310
  29. 290  M=0:P0=STICK(1):P1=STICK(1):C0=30<P0 AND P0<225:C1=30<P1 AND P1<225:IF C1 AND NOT C0 THEN M=52-2*(P0>127):GOTO 310
  30. 300  IF CO AND NOT C1 THEN M=56+6*(P1>127)
  31. 310  IF M=50 OR M=52 OR M=54 OR M= 56 THEN SOUND 400,0.5:SOUND 600,1:IF M=56 THEN SI=20:GOSUB 600:GOTO 330 ELSE IF M=50 AND FY<>12 THEN SI=-20:GOSUB 600:GOTO 330
  32. 320  FOR D=1 TO 50 :NEXT  :'DELAY
  33. 330  NX=FX:NY=FY:IF M=56 THEN NY=FY-1
  34. 340  IF M=52 AND FX-16>=0 THEN NX=FX-16
  35. 350  IF M=54 AND FX+16<240 THEN NX=FX+16
  36. 360  IF M=50 AND FY<>12 THEN NY=FY+1
  37. 370  IF NY THEN 390
  38. 380  PUT (FX,35),BK%,PSET:GET (FX,23)-(FX+13,33),BK%:PSET (FK+6,23):DRAW FROG$:FOR X=2 TO 23:IF BK%(X)<>0 THEN YA=23:GOTO 430 ELSE NEXT: GOTO 580
  39. 390  IF FY>6 THEN PUT (FX,YA),BK%,PSET:GOTO 420
  40. 400  NX=NX-DA(FY)*(M<>56 AND M<>50):IF NX<0 OR NX>239 THEN 430
  41. 410   IF M THEN PUT (FX,YA),BK%,PSET
  42. 420  DEF SEG=CS:CALL HS:FX=NX:FY=NY:TM=TM-1:IF TM THEN IF M OR FY>6 THEN 220 ELSE230
  43. 430  FOR X=700 TO 300 STEP-20:PSET (FX+6,YA):DRAW FROG$:PUT (FX,YA),BK%,PSET:SOUND X,1:NEXT
  44. 440  FR=FR-1:IF FR THEN LINE(285,FR*40-20)-(298,FR*40-10),0,BF:GOTO 210
  45. 450  FOR X=1 TO 500:NEXT:CLS:FOR X=1 TO 4:SOUND 100,3:SOUND 300,3:NEXT:PRINT:PRINT:PRINT TAB(12)" G A M E   O V E R":PRINT:PRINT:IF TS(0)=0 AND SC=0 THEN 510
  46. 460  IF SC<=TS(9) THEN 490
  47. 470  PRINT "YOUR SCORE IS IN THE TOP TEN":PRINT:DEF SEG=0:POKE 1050,PEEK(1052):LINE INPUT"ENTER YOUR NAME PLEASE: ";TN$(9):TS(9)=SC:FOR X=0 TO 8:AP=X:FOR Y=X+1 TO 9:IF TS(Y)>TS(AP) THEN AP=Y
  48. 480  NEXT Y:HN=TS(X):HN$=TN$(X):TS(X)=TS(AP):TN$(X)=TN$(AP):TS(AP)=HN:TN$(AP)=HN$:NEXT X:PRINT :PRINT
  49. 490  FOR X=0 TO 9:IF TS(X)=0 THEN 510
  50. 500  PRINT USING"######   ";TS(X);:PRINT TN$(X):NEXT
  51. 510  PRINT:PRINT:PRINT "WOULD YOU LIKE TO PLAY AGAIN? ";:CF=0
  52. 520  A$=INKEY$:IF A$="" THEN CF=CF+1:IF CF=20 THEN PRINT CHR$(95);CHR$(29);:GOTO 520 ELSE IF CF=40 THEN CF=0:PRINT "  "CHR$(29);:GOTO 520 ELSE 520
  53. 530  A$=FNUP$(A$):IF A$<>"Y" AND A$<>"y" AND A$<>"n" AND A$<>"N" THEN 520
  54. 540  IF A$="Y" OR A$="y" THEN 160
  55. 550  ON ERROR GOTO 570
  56. 560  OPEN"HOPPER.SCO" FOR OUTPUT AS 1:FOR X=0 TO 9:PRINT #1,TS(X):PRINT #1,TN$(X):NEXT X
  57. 570  ON ERROR GOTO 0:CLOSE:CLS:END
  58. 580  SI=250:GOSUB 600:FA=FA+1:FOR X= 250 TO 350 STEP 10:SOUND X,1:NEXT X:IF FA<>5 THEN 210
  59. 590  SI=2000:GOSUB 600:PLAY"P2L8C.CL16CL8D.GL16FL8EL4C":B=B+1+(B=4):GOSUB 610:GOTO 180
  60. 600  SC=SC+SI:LOCATE 24,12:PRINT SC;:RETURN
  61. 610  FOR X= 23 TO 215 STEP 48: LINE (X,12)-(X+24,33),0,BF:NEXT :LINE (0,35)-(255,94),0,BF:LINE (0,106)-(255,166),0,BF:RETURN
  62. 620  DATA 235,18,144,0,0,1,255,2,255,2,0,1,255,2,254,255,0,0,0,0,30,6,184,85,184,142,216,142,192,46,199,6,3,0,10,0,46,139,54,3,0,46,138,132,5,0,60,0,117,3,233,159,0,46,162,17,0
  63. 630  DATA 46,162,18,0,139,198,187,224,1,247,227,139,216,46,198,6,16,0,2,46,246,6,17,0,128,117,66,253,131,195,62,139,251,46,198,6,19,0,6,139,247,131,238,2,139,5,185,31,0,243,165,137,68,2,129,199,142
  64. 640  DATA 0,46,254,14,19,0,117,230,46,254,14,17,0,117,215,46,254,14,16,0,116,76,46,160,18,0,46,162,17,0,129,195,0,32,235,194,252,139,251,46,198,6,19,0,6,139,247,131,198,2,139,5,185,31,0,243,165
  65. 650  DATA 137,68,254,131,199,18,46,254,14,19,0,117,231,46,254,6,17,0,117,216,46,254,14,16,0,116,14,46,160,18,0,46,162,17,0,129,195,0,32,235,195,46,255,14,3,0,46,129,62,3,0,255,255,116,3,233,63
  66. 660  DATA 255,7,31,203
  67.